package common;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * Interfaccia per i metodi messi a disposizione dal server, gesyito tramite RMI
 *  
 * @author Jacopo Ferrigno
 *
 */

public interface RmiInterface extends Remote {


	/**
	 * Rimuove il client spefificato come host dalla lista dei client connessi
	 * @param host nome host del client che si vuole eliminare
	 * @return 0 se ha avuto successo, -1 altrimenti
	 * @throws RemoteException nel caso insorgano problemi di connessione
	 */
	public int dell(String host)throws RemoteException;
	/**
	 * Classico ping in un ottica di RMI
	 * 
	 * @param msg messaggio da tramettere, come controllo
	 * @return un intero
	 * @throws RemoteException nel caso insorgano problemi di connessione
	 */
	public int ping(int msg) throws RemoteException;
	/**
	 * Notifica al server che si e' aggiunto un nuovo client.
	 * 
	 * @param host un identificativo univoco del client connesso
	 * @param newClient	 un oggetto di tipo, ClientInterface che permetta al server di richiamarne i metodi
	 * @param newPingClient  oggetto di tipo, RmiInterface che permetta al server di richiamarne i metodi
	 * @param token il token civevuto al momento del login
	 * @return 0 se non si sono presentati errori, -1 altrimeni
	 * @throws RemoteException nel caso sorgano problemi di connessione
	 */
	public int add(String host, ClientInterface newClient, RmiInterface newPingClient, int token) throws RemoteException;
	
}
